package com.whale.api;

import java.io.File;
import java.util.List;
import com.whale.entity.Comment;
import com.whale.entity.FollowCount;
import com.whale.entity.Image;
import com.whale.entity.Location;
import com.whale.entity.PostStream;
import com.whale.entity.Response;
import com.whale.entity.Stream;
import com.whale.entity.User;

public interface IWebApiService {

    /** 登录 */
    public Response<User> login(String email, String password);

    /** 退出 */
    public boolean logout();

    /** 注册用户 */
    public Response<User> register(String email, String name, String password, String rpassword);

    /** 发表分享 */
    public Response<Stream> postStream(PostStream postStream);

    /** 查看某条stream */
    public Response<Stream> viewStream(String streamId);

    /** 查看某人的wall */
    public Response<List<Stream>> viewOtherWall(String uid, String orderBy, int size);

    /** 查看主墙 */
    public Response<List<Stream>> viewSelfWall(String orderBy, int size);

    /** 删除某个stream */
    public Response<String> removeStream(String streamId);

    /** 获得有过分享地理位置信息 */
    public Response<Location> getLocations(String streamId);

    /** 上传图片 */
    public Response<Image> uploadImage(File imageFile);

    /** 上传头像 */
    public Response<Image> uploadAvatar(File imageFile);

    /** 根据分享的id获取评论 */
    public Response<List<Comment>> getComments(String sid, int offset, int size);

    /** 删除评论 */
    public Response<String> removeComment(String id);

    /** 计算评论个数 */
    public Response<Long> countComment(String sid);

    /** 添加评论 */
    public Response<Comment> addComment(String sid, String content);

    /** 关注推荐 */
    public Response<List<User>> recommend();

    /** 关注 **/
    public Response<Object> addFollow(String fuid);

    /** 取消关注 */
    public Response<Object> removeFollow(String fuid);

    /**查看关注我的人(fans)*/
    public Response<List<User>> getFans(int offset, int size);
    
    /**关注我的人数量*/
    public Response<Long> countFans(int offset, int size);
    
    /**我关注的人*/
    public Response<List<User>> getMyFollows(int offset, int size);
    
    /**我关注人的数量*/
    public Response<Long> countMyFollows(int offset, int size);
    
    
    /**我关注的人*/
    public Response<List<User>> getMyFirends(int offset, int size);
    
    /**我关注人的数量*/
    public Response<Long> countMyFirends(int offset, int size);
    
    /**取出所有数量*/
    public Response<FollowCount> countAll(int offset, int size);
    
}
